Error with `Thread.Sleep` during automatic testing on TeamCity 5

Posted by yeyeyerman on Stack Overflow See other posts from Stack Overflow or by yeyeyerman
Published on 2010-05-31T12:27:41Z Indexed on 2010/05/31 14:53 UTC
Read the original article Hit count: 145

Filed under:
|
|
|

Hello,

I'm having some problems executing the tests of the application I'm developing. All the tests execute normally with ReSharper and in NCover. However, the execution of one of these tests in TeamCity is generating an error.

This test initializes two objects, the object under test and a simulator of a real object. Both objects will communicate throug a serial link in a representation of the real scenario.

ObjectSimulator r_simulator = new ObjectSimulator(...);
ObjectDriver r_driver = new ObjectDriver(...);
Assert.IsTrue(r_driver.Connect() == ErrorCode.Success);

The simulator just do the following in the constructor

public class ObjectSimulator
{
    ...

    public ObjectSimulator()
    {
        // serial port configuration
        m_port = new SerialPort();
        m_port.DataReceived += DataReceivedEvent;
    }

    ...
}

The main object has two threads. The main thread of the application and a timer to refresh a watchdog timer in the real object.

public ErrorCode Connect()
{
    ...
    StartSynchroTimer();
    Thread.Sleep(4);  // to check if the timer is working properly
    ...
}

The problem seems to be comming from the Thread.Sleep() call, as when I remove it everything works. The ObjectSimulator somehow doesn't execute the DataReceived event callback. How can I resolve this issue?

© Stack Overflow or respective owner

Related posts about c#

Related posts about multithreading